#!/bin/bash

# 基于K3s部署WordPress博客系统的自动化脚本

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

# 检查kubectl是否可用
if ! command -v kubectl &> /dev/null
then
    echo -e "${RED}错误: kubectl未安装或不可用${NC}"
    exit 1
fi

# 检查是否已连接到K3s集群
if ! kubectl get nodes &> /dev/null
then
    echo -e "${RED}错误: 无法连接到K3s集群。请确保kubectl配置正确。${NC}"
    exit 1
fi

# 创建命名空间
echo -e "${YELLOW}创建命名空间...${NC}"
kubectl create namespace blog || true

# 创建MySQL密钥
echo -e "${YELLOW}创建MySQL密钥...${NC}"
kubectl create secret generic mysql-secret \
  --namespace=blog \
  --from-literal=root-password=$(openssl rand -base64 16) \
  --from-literal=password=$(openssl rand -base64 16) \
  --dry-run=client -o yaml | kubectl apply -f -

# 部署MySQL
echo -e "${YELLOW}部署MySQL...${NC}"
kubectl apply -f k3s/mysql/

# 等待MySQL就绪
echo -e "${YELLOW}等待MySQL就绪...${NC}"
kubectl wait --namespace=blog --for=condition=ready pod -l app=mysql --timeout=3m

# 部署Redis
echo -e "${YELLOW}部署Redis...${NC}"
kubectl apply -f k3s/redis/

# 等待Redis就绪
echo -e "${YELLOW}等待Redis就绪...${NC}"
kubectl wait --namespace=blog --for=condition=ready pod -l app=redis --timeout=2m

# 部署WordPress
echo -e "${YELLOW}部署WordPress...${NC}"
kubectl apply -f k3s/wordpress/

# 部署Ingress
echo -e "${YELLOW}部署Ingress...${NC}"
kubectl apply -f k3s/ingress.yaml

echo -e "${GREEN}部署完成！${NC}"
echo -e "${GREEN}请等待几分钟，然后通过https://blog.example.com访问您的博客。${NC}"